home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 17
/
CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso
/
CUCD
/
Programming
/
DiceSource
/
lib
/
amiga
/
path.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-09-09
|
1KB
|
62 lines
/*
* PATH.C
*
* (c)Copyright 1992-1997 Obvious Implementations Corp. Redistribution and
* use is allowed under the terms of the DICE-LICENSE FILE,
* DICE-LICENSE.TXT.
*
* Search the path for a command name
*/
#include <exec/types.h>
#include <exec/execbase.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <clib/dos_protos.h>
#include <stdio.h>
#include <lib/bcpl.h>
#include <lib/misc.h>
typedef struct CommandLineInterface CLI;
typedef struct Process Process;
typedef struct LockList {
BPTR NextPath;
BPTR PathLock;
} LockList;
extern struct ExecBase *SysBase;
long
_SearchPath(cmd)
char *cmd;
{
CLI *cli;
LockList *ll;
if (SysBase->ThisTask->tc_Node.ln_Type != NT_PROCESS)
return(0);
if ((cli = BTOC(((Process *)SysBase->ThisTask)->pr_CLI, CLI)) == NULL)
return(0);
ll = BTOC(cli->cli_CommandDir, LockList);
while (ll) {
if (ll->PathLock) {
long oldLock = CurrentDir(ll->PathLock);
long lock;
if (lock = Lock(cmd, SHARED_LOCK)) {
CurrentDir(oldLock);
return(lock);
}
CurrentDir(oldLock);
}
ll = BTOC(ll->NextPath, LockList);
}
return(0);
}